package com.prj.ufdm.cloud.ms.core.dao;

import java.util.List;
import tk.mybatis.mapper.common.Mapper;
import tk.mybatis.mapper.common.MySqlMapper;

/** 
  * 通用DAO基础类
  * @author 胡义振
  * @date 2018年3月21日 
*/
public interface BaseDao<T> extends Mapper<T>, MySqlMapper<T> {
	
	/**
	 * DESC: 通用单个对象查询
	 * @param id
	 * @return
	 * @throws Exception
	 * @auther 胡义振
	 * @date 2018年3月21日 
	 */
	public T selectById(String id) throws Exception;
	
	/**
	 * DESC: 通用列表查询
	 * @param object 查询参数
	 * @return 查询结果集
	 * @throws Exception
	 * @auther 胡义振
	 * @date 2018年3月21日 
	 */
	public List<T> selectList(T object) throws Exception;
	
	/**
	 * DESC: 通用查询总数
	 * @param paramQryMap 查询参数
	 * @return 查询总数
	 * @throws Exception
	 * @auther 胡义振
	 * @date 2018年3月21日 
	 */
	public Integer selectTotal(T object) throws Exception;
	
	/**
	 * DESC: 通用保存操作
	 * @param object 要保存的对象
	 * @return 保存的ID
	 * @throws Exception
	 * @auther 胡义振
	 * @date 2018年3月21日 
	 */
	public int insertOne(T object) throws Exception;
	
	/**
	 * DESC: 通用保存操作
	 * @param listObject 要保存的List对象
	 * @return 保存的ID
	 * @throws Exception
	 * @auther 胡义振
	 * @date 2018年3月21日 
	 */
	public int insertBatch(List<T> listObject) throws Exception;
	
	/**
	 * DESC: 通用单条更新操作
	 * @param object 要修改的对象
	 * @return 更新条数
	 * @throws Exception
	 * @auther 胡义振
	 * @date 2018年3月21日 
	 */
	public int updateById(T object) throws Exception;
	
	/**
	 * DESC: 通用批量更新操作
	 * @param listObject 要修改的对象
	 * @return 更新条数
	 * @throws Exception
	 * @auther 胡义振
	 * @date 2018年3月21日 
	 */
	public int updateBatchById(List<T> listObject) throws Exception;
	
	
	/**
	 * DESC: 通用单条删除操作
	 * @param id 要删除的ID
	 * @return 删除条数
	 * @throws Exception
	 * @auther 胡义振
	 * @date 2018年3月21日 
	 */
	public int deleteById(String id) throws Exception;
	
	/**
	 * DESC: 通用多条删除操作
	 * @param listIds 要删除的ID(以“,”号分割)
	 * @return 删除条数
	 * @throws Exception
	 * @auther 胡义振
	 * @date 2018年3月21日 
	 */
	public int deleteByIds(List<String> listIds) throws Exception;
	
}
